package com.zhanghe.study.study_scala.fun

/**
 * 函数
 * @author zh
 * @date 2021/4/30 22:26
 */
object TestFuncation {
  def main(args: Array[String]): Unit = {
//    println(TestFuncation.add _)
//    println(add(10, 20))

    //host:localhost,port:3306,user:root,password:root
    connect()
    //从左到右赋值
    // host:127.0.0.1,port:12423,user:root,password:root
    connect("127.0.0.1",12423)
    // 带名参数指定覆盖
    // host:localhost,port:3306,user:root,password:123456
    connect(password = "123456")

    fun(1,2,3)

    val f1 = add(1,2)
    // 把一个函数赋给一个变量，但是并不执行函数
    val f2 = add _
  }

  // 定义方法/函数
  def add(a: Int, b: Int): Int = {
    return a + b;
  }

  // 定义方法/函数
  def add1(a: Int, b: Int) = {
    a + b;
  }

  // 定义方法/函数
  def add2(a: Int, b: Int) {
    a + b;
  }

  // 指定默认值
  def connect(host: String = "localhost", port: Int = 3306, user: String = "root", password: String = "root") = {
    println("host:" + host + ",port:" + port + ",user:" + user + ",password:" + password)
  }

  // 可变参数
  // 0到n个参数
  // 可变参数要放在形参列表的最后  *-parameter must come last
  def fun(args:Int*): Unit ={
    println(args)
  }

}
